/**
 * 项目基础业务逻辑
 * 提供项目基础操作和工具方法
 */

const cloudHelper = require('../../config/project_helpers_config').cloudHelper;
const timeHelper = require('../../config/project_helpers_config').timeHelper;
const dataHelper = require('../../config/project_helpers_config').dataHelper;
const cacheHelper = require('../../config/project_helpers_config').cacheHelper;

/**
 * 项目业务逻辑
 */
class ProjectBiz {
  /**
   * 获取项目列表
   * @param {Object} params 查询参数
   * @returns {Promise<Object>} 项目列表和分页信息
   */
  static async getProjectList(params = {}) {
    try {
      const result = await cloudHelper.callCloudData('project/list', params);
      return result;
    } catch (err) {
      console.error('[项目] 获取项目列表异常', err);
      throw err;
    }
  }

  /**
   * 获取项目详情
   * @param {String} id 项目ID
   * @returns {Promise<Object>} 项目详情
   */
  static async getProjectDetail(id) {
    if (!id) return null;
    
    try {
      const result = await cloudHelper.callCloudData('project/detail', { id });
      return result;
    } catch (err) {
      console.error('[项目] 获取项目详情异常', err);
      throw err;
    }
  }

  /**
   * 创建项目
   * @param {Object} data 项目数据
   * @returns {Promise<Object>} 创建结果
   */
  static async createProject(data) {
    try {
      const result = await cloudHelper.callCloudSumbit('project/create', data);
      return result;
    } catch (err) {
      console.error('[项目] 创建项目异常', err);
      throw err;
    }
  }

  /**
   * 更新项目
   * @param {String} id 项目ID
   * @param {Object} data 项目数据
   * @returns {Promise<Object>} 更新结果
   */
  static async updateProject(id, data) {
    try {
      const params = {
        id,
        data
      };
      
      const result = await cloudHelper.callCloudSumbit('project/update', params);
      return result;
    } catch (err) {
      console.error('[项目] 更新项目异常', err);
      throw err;
    }
  }

  /**
   * 检查项目编码是否可用
   * @param {String} code 项目编码
   * @param {String} excludeId 排除的项目ID（编辑时使用）
   * @returns {Promise<Boolean>} 是否可用
   */
  static async checkProjectCodeAvailable(code, excludeId = '') {
    try {
      const params = {
        code,
        excludeId
      };
      
      const result = await cloudHelper.callCloudData('project/check_code', params);
      return result && result.available === true;
    } catch (err) {
      console.error('[项目] 检查项目编码异常', err);
      return false;
    }
  }

  /**
   * 格式化项目状态显示
   * @param {Number} status 状态码
   * @returns {Object} 状态信息，包含 name, icon, color
   */
  static formatStatus(status) {
    const statusMap = {
      0: { name: '待立项', icon: 'newshot', color: 'orange' },
      1: { name: '进行中', icon: 'timefill', color: 'green' },
      2: { name: '已暂停', icon: 'attentionforbid', color: 'grey' },
      3: { name: '进行中', icon: 'timefill', color: 'blue' },
      99: { name: '已完成', icon: 'roundcheckfill', color: 'blue' }
    };
    
    return statusMap[status] || { name: '未知状态', icon: 'questionfill', color: 'grey' };
  }
}

// 导出模块
module.exports = ProjectBiz; 